package com.xoms.admin.persist.dao;

import java.util.List;

import com.xoms.admin.model.ProductBean;
import com.xoms.admin.model.vo.BatchProGroupBean;
import com.xoms.admin.model.vo.ProTreeNodeBean;
import com.xoms.admin.model.vo.ProductDetailBean;
import com.xoms.admin.model.vo.TreeNodeBean;


public interface ProductDao {
	
	/**
	 * 获取商品数量
	 * @param key
	 * @param cid
	 * @param type 
	 * @return
	 */
	int selectCount(String key, String cid, String type);

	/**
	 * 获取商品列表
	 * @param key
	 * @param page
	 * @param pagesize
	 * @param cid
	 * @param type
	 * @return
	 */
	List<ProductBean> selectList(String key, int page, int pagesize, String cid, String type);
	
	/**
	 * 根据名称判断商品是否存在
	 * @param name
	 * @return
	 */
	int selectProCountByName(String name);
	
	/**
	 * 新建商品
	 * @param data
	 * @return
	 */
	int insert(ProductBean data);
	
	/**
	 * 更新商品
	 * @param data
	 * @return
	 */
	int update(ProductBean data);
	
	/**
	 * 根据id获取商品信息
	 * @param pid
	 * @return
	 */
	ProductDetailBean selectOneById(String pid);
	
	/**
	 * 获取商品组合数量
	 * @param key
	 * @param productId
	 * @return
	 */
	int selectGroupCount(String productId);
	
	/**
	 * 根据名称或条形码查询商品数量
	 * @param name
	 * @param productBar
	 * @return
	 */
	int selectProCountByNameBar(String name, String productBar);
	
	/**
	 * 根据名称或条形码查询商品
	 * @param name
	 * @param productBar
	 * @return
	 */
	List<ProductBean> selectProductByNameBar(String name, String productBar);
	
	/**
	 * 查询条形码对应商品数量
	 * @param productBar
	 * @return
	 */
	int selectCountByProBar(String productBar);
	
	/**
	 * 获取最大商品编号
	 * @return
	 */
	String selectMaxProNo();
	
	/**
	 * 排序
	 * @param sortList
	 * @return
	 */
	int updateSorts(List<String> sortList);
	
	/**
	 * 获取当前在售商品
	 * @return
	 */
	List<ProTreeNodeBean> selectSellProducts();
	
	/**
	 * 根据商品id删除商品组合列表
	 * @param pid
	 * @return
	 */
	int delGroupByProId(String pid);
	
	/**
	 * 批量插入商品组合列表
	 * @param batch
	 * @return
	 */
	int insertBatchGroup(List<BatchProGroupBean> batch);
	
	/**
	 * 根据分类获取商品列表
	 * @param type
	 * @return
	 */
	List<TreeNodeBean> selectSelectProducts(int type);
	
	/**
	 * 删除商品
	 * @param pid
	 * @return
	 */
	int delProduct(String pid);

}
